# -*- coding: utf-8 -*-



class BaseItemPipeline(object):

	def __init__(self):
		pass

	# 必须要实现的方法
	# 这个方法每次都会调用，这个方法是处理数据逻辑所在，可通过item参数获得到在spider已成功爬去的已封装的数据，
	# 通过不同的返回参数来区别不同的pipeline 流程控制.
	# return parameter ,dict
	# Item（即参数item）,或其子类
	# return a Twisted Deferred
	# raise DropItem 异常，以表示该item不需要被之后的pipline处理 即丢弃了改item
	def process_item(self, item, spider):
		# item (Item 对象) – 被爬取的item
		# spider (Spider 对象) – 爬取该item的spider
	 	# 这个方法必须返回一个 Item 对象，被丢弃的item将不会被之后的pipeline组件所处理。
		return item

	#可选实现的方法
	def open_spider(self, spider):
		# spider (Spider 对象) – 被开启的spider
		# 可选实现，当spider被开启时，这个方法被调用。
        pass

	# 可选实现的方法
	def close_spider(self, spider):
		# spider (Spider 对象) – 被关闭的spider
		# 可选实现，当spider被关闭时，这个方法被调用
		pass

	# 可选实现的方法
	# If present, this classmethod is called to create a pipeline instance from a Crawler.
	# It must return a new instance of the pipeline.
	# Crawler object provides access to all Scrapy core components like settings and signals;
	# it is a way for pipeline to access them and hook its functionality into Scrapy.
	@classmethod
	def from_crawler(cls, crawler):
		pass
